import 'package:flutter/material.dart';

class ProductProvider with ChangeNotifier {
  int _skuNum = 1;
  Map _storeInfo = {};
  bool _single = true;
  String _sku = "";
  List _productAttr = [];
  Map _productValue = {};

  int get skuNum => _skuNum;
  Map get storeInfo => _storeInfo;
  bool get single => _single;
  String get sku => _sku;
  List get productAttr => _productAttr;
  Map get productValue => _productValue;

  // 初始化商品信息
  void initProduct(Map detail) {
    _storeInfo = detail['storeInfo'];
    _skuNum = 1;

    if (detail['productAttr'].length > 0) {
      // 多规格
      _single = false;
      // 初始化 sku
      _sku = ""; // 清除历史记录
      detail['productAttr'].map((spec) {
        spec['selected'] = spec['attr_values'].first;
        _sku += spec['selected'].toString() + ",";
        return spec;
      }).toList();
      print(detail['productAttr']);
      print(_sku);
      // _sku = "6G,12G,"
      _sku = _sku.substring(0, _sku.length - 1);

      _productAttr = detail['productAttr'];

      _productValue = detail['productValue'];
    } else {
      // 单规格
      _single = true;
    }
  }

  // 选择规格
  void selectSpec(int id, String attr_value) {
    _productAttr.map((spec) {
      if (spec['id'] == id) {
        spec['selected'] = attr_value;
        return spec;
      }
    }).toList();
    print(_productAttr);
    // 更新 sku
    updateSku();
    print(_sku);

    // 通知 UI 更新
    notifyListeners();
  }

  void updateSku() {
    _sku = ""; // 清除历史记录
    var target = "";
    _productAttr.forEach((element) {
      // 获取选中的规格
      target += element['selected'].toString() + ",";
    });

    _sku = target.substring(0, target.length - 1);
  }

  // 返回当前的商品规格
  Map getProductSpec() {
    if (_productValue.containsKey(_sku)) {
      return _productValue[_sku];
    } else {
      return {};
    }
  }

  // 递增
  void increment() {
    _skuNum++;

    // 通知 UI 更新
    notifyListeners();
  }

  // 递减
  void decrement() {
    if (_skuNum > 1) {
      _skuNum--;

      notifyListeners();
    }
  }
}
